import 'package:abc/view/CustomActionCard.dart';
import 'package:abc/view/GradientButton.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:wechat_assets_picker/wechat_assets_picker.dart';

class WithdrawController extends GetxController
    with GetSingleTickerProviderStateMixin {
  // --- TabBar 控制器 ---
  late TabController tabController;
  final List<String> tabs = ['银行卡', '微信', '支付宝', 'USDT'];

  // 图片路径状态变量
  final Rx<String?> weChatImage = Rx<String?>(null);
  final Rx<String?> aliPayImage = Rx<String?>(null);

  // 输入字段状态变量
  final Rx<String> name = Rx<String>(''); // 姓名
  final Rx<String> bankCardNumber = Rx<String>(''); // 银行卡号
  final Rx<String> withdrawalAmount = Rx<String>(''); // 提现金额
  final Rx<String> walletAddress = Rx<String>(''); // 钱包地址

  //final Rx<String> tipText = Rx<String>(''); // 下方提示

  @override
  void onInit() {
    super.onInit();
    tabController = TabController(length: tabs.length, vsync: this);
  }

  @override
  void onClose() {
    tabController.dispose();
    super.onClose();
  }

  Rx<String> get tipText {
    if (tabController.index == 0) {
      return ''.obs;
    }
    if (tabController.index == 1 || tabController.index == 2) {
      return '''温馨提示：
1、请上传正确的收款码，如资料错误可能导致提现失败
2、提现到账时间1-2个工作日
3、你的个人资料将严格保密，不会用于第三方'''
          .obs;
    } else {
      return '''温馨提示：
1、请选择TRC20主网络，上传正确钱包地址
2、若主网络选择错误或者钱包地址错误，所造成的损失，平台概不负责
3、提现到账时间为1-2个工作日，请留意
4、你的个人资料将严格保密，不会用于第三方'''
          .obs;
    }
  }

  // 选择图片的方法
  Future<void> selectImage(int tabIndex) async {
    try {
      // 请求权限
      final PermissionState permission =
          await PhotoManager.requestPermissionExtend();
      if (!permission.isAuth) {
        // 权限被拒绝
        Get.snackbar('提示', '请允许访问相册权限');
        return;
      }

      // 使用 wechat_assets_picker 选择图片
      final List<AssetEntity>? assets = await AssetPicker.pickAssets(
        Get.context!,
        pickerConfig: const AssetPickerConfig(
          maxAssets: 1,
          requestType: RequestType.image,
        ),
      );

      if (assets != null && assets.isNotEmpty) {
        final AssetEntity asset = assets.first;
        final String? imagePath = await asset.originFile.then(
          (file) => file?.path,
        );

        // 根据tab索引设置对应的图片路径
        if (tabIndex == 1) {
          // 微信 tab
          weChatImage.value = imagePath;
        } else if (tabIndex == 2) {
          // 支付宝 tab
          aliPayImage.value = imagePath;
        }
      }
    } catch (e) {
      Get.snackbar('错误', '选择图片失败: $e');
    }
  }

  Future<void> submitWithdrawal() async {
    // 移除BuildContext参数
    // if (tabController.index == 0) {
    //   //银行卡
    //   if (name.value.isEmpty) {
    //     return;
    //   }
    //   if (bankCardNumber.value.isEmpty) {
    //     return;
    //   }
    // } else if (tabController.index == 1) {
    //   //微信
    // } else if (tabController.index == 2) {
    //   //支付宝
    // } else {
    //   //usdt
    //   if (walletAddress.value.isEmpty) {
    //     return;
    //   }
    // }

    showPaySuccSheet(Get.context!); // 使用Get.context获取context
  }

  void showPaySuccSheet(BuildContext context) {
    const TextStyle baseStyle = TextStyle(
      color: Color(0xFF999999), // 灰色
      fontSize: 15,
      height: 1.5, // 行高
    );

    // 高亮样式：黑色，与基础样式大小一致
    const TextStyle highlightStyle = TextStyle(
      color: Colors.black, // 黑色
      fontSize: 15,
      height: 1.5,
      fontWeight: FontWeight.w400, // 增加粗体以强调，更接近图片中的效果
    );
    showModalBottomSheet<void>(
      context: context,
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(top: Radius.circular(20.0)),
      ),

      builder: (BuildContext context) {
        return Container(
          // 这是 Bottom Sheet 的容器，可以设置内边距
          // padding: const EdgeInsets.only(
          //   top: 22,
          //   bottom: 32,
          //   left: 14,
          //   right: 14,
          // ),
          // 底部安全区域处理，防止按钮被手势或系统UI遮挡
          child: SafeArea(
            child: Stack(
              children: [
                Positioned(
                  right: 15,
                  top: 18,
                  child: InkWell(
                    onTap: () => Navigator.of(context).pop(),
                    child: Image.asset(
                      'assets/images/ic_close.png',
                      width: 18,
                      height: 18,
                    ),
                  ),
                ),
                Column(
                  mainAxisSize: MainAxisSize.min, // 关键：让 Bottom Sheet 紧贴内容高度
                  children: <Widget>[
                    Image.asset(
                      'assets/images/ic_tip.png',
                      width: 172,
                      height: 130,
                    ),

                    Text(
                      '温馨提示',
                      style: const TextStyle(
                        fontSize: 18,
                        fontWeight: FontWeight.bold,
                        color: Color(0xFF333333),
                      ),
                    ),
                    SizedBox(height: 12),
                    Text.rich(
                      TextSpan(
                        style: baseStyle, // 默认应用基础样式
                        children: <TextSpan>[
                          const TextSpan(text: '您的提现已提交，审核预计'),
                          const TextSpan(
                            text: '1-2个工作日', // 黑色
                            style: highlightStyle,
                          ),
                          const TextSpan(text: '，审核结果可在「'),
                          const TextSpan(
                            text: '消息中心', // 黑色
                            style: highlightStyle,
                          ),
                          const TextSpan(text: '」或「'),
                          const TextSpan(
                            text: '提现记录', // 黑色
                            style: highlightStyle,
                          ),
                          const TextSpan(text: '」中查看'),
                        ],
                      ),
                      textAlign: TextAlign.center, // 如果需要居中显示
                    ).paddingSymmetric(horizontal: 48),

                    SizedBox(height: 28),
                    GradientButton(
                      text: '好的',
                      height: 42,
                      margin: EdgeInsetsGeometry.symmetric(horizontal: 113),
                      onPressed: () {
                        Navigator.of(context).pop();
                      },
                    ),
                    SizedBox(height: 42),
                  ],
                ),
              ],
            ),
          ),
        );
      },
    );
  }
}
